====== Iperf ======

Iperf est un logiciel informatique permettant la mesure de différentes variables d'une connexion réseau IP.
Le cas plus courant d'utilisation de la commande iperf est la mesure de la bande passante entre deux machines.

Iperf peut être installé très facilement sur n'importe quel système. Un hôte doit être configuré en tant que client et l'autre en tant que serveur.

===== Installation =====

Pour installer iperf, il vous suffit d'[[:tutoriel:comment_installer_un_paquet#paquet_present_dans_les_depots|installer le paquet]] **[[apt://iperf|iperf]]**.

===== Utilisation=====

Afin de mesurer le débit entre deux éléments réseau, on utilise iperf en client sur une machine et en serveur sur une autre.
Le client iperf va uploader les données
Le serveur iperf va downloader les données

Exemple:

Sur le poste1 on lance le serveur iperf
<code>
bartounet@laptop:/$ sudo iperf -s
</code>

Sur le poste2 on lance le client iperf de façon à se connecter au poste1
<code>
bartounet@bartounet:/$ sudo iperf -c laptop
</code>

On obtient alors au bout de 10 secondes le débit réseau durant la transaction.
<code>
bartounet@bartounet:/$ sudo iperf -c laptop
------------------------------------------------------------
Client connecting to laptop, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.100 port 48470 connected with 10.0.0.105 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  26.2 MBytes  21.9 Mbits/sec
</code>

===== Les options=====
Iperf accepte un grand nombre d'arguments.

Client/Server:
  -f, --format    [kmKM]   format to report: Kbits, Mbits, KBytes, MBytes
  -i, --interval  #        seconds between periodic bandwidth reports
  -l, --len       #[KM]    length of buffer to read or write (default 8 KB)
  -m, --print_mss          print TCP maximum segment size (MTU - TCP/IP header)
  -o, --output    <filename> output the report or error message to this specified file
  -p, --port      #        server port to listen on/connect to
  -u, --udp                use UDP rather than TCP
  -w, --window    #[KM]    TCP window size (socket buffer size)
  -B, --bind      <host>   bind to <host>, an interface or multicast address
  -C, --compatibility      for use with older versions does not sent extra msgs
  -M, --mss       #        set TCP maximum segment size (MTU - 40 bytes)
  -N, --nodelay            set TCP no delay, disabling Nagle's Algorithm
  -V, --IPv6Version        Set the domain to IPv6

Server specific:
  -s, --server             run in server mode
  -U, --single_udp         run in single threaded UDP mode
  -D, --daemon             run the server as a daemon

Client specific:
  -b, --bandwidth #[KM]    for UDP, bandwidth to send at in bits/sec
                           (default 1 Mbit/sec, implies -u)
  -c, --client    <host>   run in client mode, connecting to <host>
  -d, --dualtest           Do a bidirectional test simultaneously
  -n, --num       #[KM]    number of bytes to transmit (instead of -t)
  -r, --tradeoff           Do a bidirectional test individually
  -t, --time      #        time in seconds to transmit for (default 10 secs)
  -F, --fileinput <name>   input the data to be transmitted from a file
  -I, --stdin              input the data to be transmitted from stdin
  -L, --listenport #       port to recieve bidirectional tests back on
  -P, --parallel  #        number of parallel client threads to run
  -T, --ttl       #        time-to-live, for multicast (default 1)
  -Z, --linux-congestion <algo>  set TCP congestion control algorithm (Linux only)


==== Références ====

  * [[http://dast.nlanr.net/Projects/Iperf/|Site iperf]] Site officiel iperf